package com.chenailin.www.util;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.Scanner;
import java.util.stream.Collectors;

public class InputValidator {
    private static final Scanner sc = new Scanner(System.in);

    // 防止脸滚键盘
    public static int getIntInput(int min, int max) {
        while (true) {
            try {
                int input = Integer.parseInt(sc.nextLine());
                if (input >= min && input <= max) return input;
                System.out.printf("请输入%d~%d之间的数字: ", min, max);
            } catch (NumberFormatException e) {
                System.out.print("输入格式错误，请重新输入: ");
            }
        }
    }

    // 手机号格式验证
    public static String getPhoneInput() {
        while (true) {
            String phone = sc.nextLine();
            if (phone.matches("1[3-9]\\d{9}")) return phone;
            System.out.print("手机号格式错误，请重新输入: ");
        }
    }

    // 确认密码
    public static String confirmPassword() {
        while (true) {
            System.out.println("请输入新密码:");
            String password = sc.nextLine();
            System.out.println("请确认新密码:");
            String confirm = sc.nextLine();
            if (password.equals(confirm)) {
                return password;
            }
            System.out.println("两次输入不一致，请重新输入");
        }
    }

    // 安全字符串转整数
    public static Optional<Integer> safeStringToInt(String input) {
        if (input == null || input.trim().isEmpty()) {
            return Optional.empty();
        }
        try {
            return Optional.of(Integer.parseInt(input.trim()));
        } catch (NumberFormatException e) {
            return Optional.empty();
        }
    }

    // 分割时间的方法
    public static List<Integer> parseTimeSlots(String input) {
        return Arrays.stream(input.split(","))      // 1. 按逗号切割字符串 → 得到字符串数组
                .map(String::trim)                          // 2. 去除每个元素的前后空格（如 " 1" → "1"）
                .map(Integer::parseInt)                     // 3. 将字符串转为整数（如 "1" → 1）
                .collect(Collectors.toList());              // 4. 收集所有整数到列表
    }

}